home *** CD-ROM | disk | FTP | other *** search
/ Robotics & Artificial Int…3 (Professional Edition) / Robotics & Artificial Intelligence Tools 2003 (Professional Edition).iso / neural network tool and application / nsinstall.exe / data1.cab / DllSys_Files / DLLGlobal.cxx < prev    next >
Encoding:
C/C++ Source or Header  |  2002-03-08  |  4.3 KB  |  157 lines

  1. // Author: Wesley Curtis Lefebvre
  2.  
  3. #include "Global.h"
  4.  
  5. void checkParameterIndices(int *row,int *col)
  6. {
  7.     if (*row > DLL_PARAM_ROWS-1)
  8.         *row = DLL_PARAM_ROWS-1;
  9.     if (*col > DLL_PARAM_COLS-1)
  10.         *col = DLL_PARAM_COLS-1;
  11.     if (*row < 0)
  12.         *row = 0;
  13.     if (*col < 0)
  14.         *col = 0;
  15. }
  16.  
  17. DLLData *allocDLLInstance(DLLData *oldInstance)
  18. {
  19.     DLLData *data = (DLLData*)malloc(sizeof(DLLData));
  20.     data->weights = NULL;
  21.     data->parameters = NULL;
  22.     data->userData = NULL;
  23.     if (oldInstance) {
  24.         if (oldInstance->weights) {
  25.             data->weights = oldInstance->weights;    
  26.             oldInstance->weights = NULL;
  27.         }    
  28.         if (oldInstance->parameters) {
  29.             data->parameters = oldInstance->parameters;    
  30.             oldInstance->parameters = NULL;
  31.         }    
  32.     }
  33.     return data;
  34. }
  35.  
  36. void freeDLLInstance(DLLData *instance)
  37. {
  38.     if (instance) {
  39.         if (instance->weights)
  40.             free(instance->weights);
  41.         if (instance->parameters)
  42.             free(instance->parameters);
  43.         free(instance);
  44.     }
  45. }
  46.  
  47. DLLData *setWeights(DLLData *instance, int numberOfWeights)
  48. {
  49.     if (!instance->weights)
  50.         instance->weights = (DLLWeights*)malloc(sizeof(DLLWeights));
  51.     instance->weights->length = numberOfWeights;
  52.     return instance;
  53. }
  54.  
  55. DLLData *allocParameters(DLLData *instance)
  56. {
  57.     int i,j;
  58.  
  59.     if (!instance->parameters) {
  60.         DLLParameters *parameters = (DLLParameters*)malloc(sizeof(DLLParameters));
  61.         for (i=0; i<DLL_PARAM_ROWS; i++)
  62.             for (j=0; j<DLL_PARAM_COLS; j++) {
  63.                 strcpy(parameters->parameters[i][j], "");
  64.                 strcpy(parameters->parameterNames[i][j], "");
  65.             }
  66.         instance->parameters = parameters;
  67.     }
  68.     return instance;
  69. }
  70.  
  71. NSFloat *getWeights(DLLData *instance)
  72. {
  73.     return instance->weights->data;
  74. }
  75.      
  76. void setUserData(DLLData *instance, void *userData)
  77. {
  78.     instance->userData = userData;
  79. }
  80.  
  81. void *getUserData(DLLData *instance)
  82. {
  83.     return instance? instance->userData: NULL;
  84. }
  85.      
  86. void setParameterName(DLLData *instance, int row, int col, char *name, BOOL realloc)
  87. {
  88.     allocParameters(instance);
  89.     checkParameterIndices(&row,&col);
  90.     strcpy(instance->parameters->parameterNames[row][col], name);
  91.     instance->parameters->parameterReallocs[row][col] = realloc;
  92. }
  93.      
  94. int getIntParameter(DLLData *instance, int row, int col)
  95. {
  96.     int intValue=0;
  97.     checkParameterIndices(&row,&col);
  98.     if (sscanf(instance->parameters->parameters[row][col], "%d", &intValue) == EOF)
  99.         return 0;
  100.     return intValue;
  101. }
  102.  
  103. NSFloat getFloatParameter(DLLData *instance, int row, int col)
  104. {
  105.     float floatValue=0.0f;
  106.     checkParameterIndices(&row,&col);
  107.     if (sscanf(instance->parameters->parameters[row][col], "%f", &floatValue) == EOF)
  108.         return 0.0f;
  109.     return floatValue;
  110. }
  111.      
  112. char *getStringParameter(DLLData *instance, int row, int col)
  113. {
  114.     checkParameterIndices(&row,&col);
  115.     return instance->parameters->parameters[row][col];
  116. }
  117.  
  118. BOOL getBoolParameter(DLLData *instance, int row, int col)
  119. {
  120.     checkParameterIndices(&row,&col);
  121.     char tempString[128];
  122.     strcpy(tempString,instance->parameters->parameters[row][col]);
  123.     return ((tolower(tempString[0]) == 't') && (tolower(tempString[1]) == 'r') && (tolower(tempString[2]) == 'u') && (tolower(tempString[3]) == 'e') && (tolower(tempString[4]) == '\0'));
  124. }
  125.  
  126. void setIntParameter(DLLData *instance, int row, int col, int intValue, BOOL force)
  127. {
  128.     allocParameters(instance);
  129.     checkParameterIndices(&row,&col);
  130.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  131.         sprintf(instance->parameters->parameters[row][col], "%d", intValue);
  132. }
  133.      
  134. void setFloatParameter(DLLData *instance, int row, int col, NSFloat floatValue, BOOL force)
  135. {
  136.     allocParameters(instance);
  137.     checkParameterIndices(&row,&col);
  138.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  139.         sprintf(instance->parameters->parameters[row][col], "%f", floatValue);
  140. }
  141.      
  142. void setStringParameter(DLLData *instance, int row, int col, char *stringValue, BOOL force)
  143. {
  144.     allocParameters(instance);
  145.     checkParameterIndices(&row,&col);
  146.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  147.         sprintf(instance->parameters->parameters[row][col], "%s", stringValue);
  148.  
  149. void setBoolParameter(DLLData *instance, int row, int col, BOOL boolValue, BOOL force)
  150. {
  151.     allocParameters(instance);
  152.     checkParameterIndices(&row,&col);
  153.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  154.         sprintf(instance->parameters->parameters[row][col], "%s", boolValue? "TRUE": "FALSE");
  155.